/*
 * uCharts®
 * 高性能跨平台图表库，支持H5、APP、小程序（微信/支付宝/百度/头条/QQ/360）、Vue、Taro等支持canvas的框架平台
 * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.
 * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
 * 复制使用请保留本段注释，感谢支持开源！
 *
 * uCharts®官方网站
 * https://www.uCharts.cn
 *
 * 开源地址:
 * https://gitee.com/uCharts/uCharts
 *
 * uni-app插件市场地址：
 * http://ext.dcloud.net.cn/plugin?id=271
 *
 */

// 主题颜色配置：如每个图表类型需要不同主题，请在对应图表类型上更改color属性
const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc']

// 事件转换函数，主要用作格式化x轴为时间轴，根据需求自行修改
const formatDateTime = (timeStamp, returnType) => {
  var date = new Date()
  date.setTime(timeStamp * 1000)
  var y = date.getFullYear()
  var m = date.getMonth() + 1
  m = m < 10 ? ('0' + m) : m
  var d = date.getDate()
  d = d < 10 ? ('0' + d) : d
  var h = date.getHours()
  h = h < 10 ? ('0' + h) : h
  var minute = date.getMinutes()
  var second = date.getSeconds()
  minute = minute < 10 ? ('0' + minute) : minute
  second = second < 10 ? ('0' + second) : second
  if (returnType == 'full') {
    return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second
  }
  if (returnType == 'y-m-d') {
    return y + '-' + m + '-' + d
  }
  if (returnType == 'h:m') {
    return h + ':' + minute
  }
  if (returnType == 'h:m:s') {
    return h + ':' + minute + ':' + second
  }
  return [y, m, d, h, minute, second]
}

const cfu = {
  // demotype为自定义图表类型，一般不需要自定义图表类型，只需要改根节点上对应的类型即可
  'type': ['pie', 'ring', 'rose', 'word', 'funnel', 'map', 'arcbar', 'line', 'column', 'mount', 'bar', 'area', 'radar', 'gauge', 'candle', 'mix', 'tline', 'tarea', 'scatter', 'bubble', 'demotype'],
  'range': ['饼状图', '圆环图', '玫瑰图', '词云图', '漏斗图', '地图', '圆弧进度条', '折线图', '柱状图', '山峰图', '条状图', '区域图', '雷达图', '仪表盘', 'K线图', '混合图', '时间轴折线', '时间轴区域', '散点图', '气泡图', '自定义类型'],
  // 增加自定义图表类型，如果需要categories，请在这里加入您的图表类型，例如最后的"demotype"
  // 自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴（矢量x轴）类图表，没有categories，不需要加入categories
  'categories': ['line', 'column', 'mount', 'bar', 'area', 'radar', 'gauge', 'candle', 'mix', 'demotype'],
  // instance为实例变量承载属性，不要删除
  'instance': {},
  // option为opts及eopts承载属性，不要删除
  'option': {},
  // 下面是自定义format配置，因除H5端外的其他端无法通过props传递函数，只能通过此属性对应下标的方式来替换
  'formatter': {
    'yAxisDemo1': function (val, index, opts) {
      return val + '元'
    },
    'yAxisDemo2': function (val, index, opts) {
      return val.toFixed(2)
    },
    'xAxisDemo1': function (val, index, opts) {
      return val + '年'
    },
    'xAxisDemo2': function (val, index, opts) {
      return formatDateTime(val, 'h:m')
    },
    'seriesDemo1': function (val, index, series, opts) {
      return val + '元'
    },
    'tooltipDemo1': function (item, category, index, opts) {
      if (index == 0) {
        return '随便用' + item.data + '年'
      } else {
        return '其他我没改' + item.data + '天'
      }
    },
    'pieDemo': function (val, index, series, opts) {
      if (index !== undefined) {
        return series[index].name + '：' + series[index].data + '元'
      }
    }
  },
  // 这里演示了自定义您的图表类型的option，可以随意命名，之后在组件上 type="demotype" 后，组件会调用这个花括号里的option，如果组件上还存在opts参数，会将demotype与opts中option合并后渲染图表。
  'demotype': {
    // 我这里把曲线图当做了自定义图表类型，您可以根据需要随意指定类型或配置
    'type': 'line',
    'color': color,
    'padding': [15, 10, 0, 15],
    'xAxis': {
      'disableGrid': true
    },
    'yAxis': {
      'gridType': 'dash',
      'dashLength': 2
    },
    'legend': {},
    'extra': {
      'line': {
        'type': 'curve',
        'width': 2
      }
    }
  },
  // 下面是自定义配置，请添加项目所需的通用配置
  'pie': {
    'type': 'pie',
    'color': color,
    'padding': [5, 5, 5, 5],
    'extra': {
      'pie': {
        'activeOpacity': 0.5,
        'activeRadius': 10,
        'offsetAngle': 0,
        'labelWidth': 15,
        'border': true,
        'borderWidth': 3,
        'borderColor': '#FFFFFF'
      }
    }
  },
  'ring': {
    'type': 'ring',
    'color': color,
    'padding': [5, 5, 5, 5],
    'rotate': false,
    'dataLabel': true,
    'legend': {
      'show': true,
      'position': 'right',
      'lineHeight': 25
    },
    'title': {
      'name': '收益率',
      'fontSize': 15,
      'color': '#666666'
    },
    'subtitle': {
      'name': '70%',
      'fontSize': 25,
      'color': '#7cb5ec'
    },
    'extra': {
      'ring': {
        'ringWidth': 30,
        'activeOpacity': 0.5,
        'activeRadius': 10,
        'offsetAngle': 0,
        'labelWidth': 15,
        'border': true,
        'borderWidth': 3,
        'borderColor': '#FFFFFF'
      }
    }
  },
  'rose': {
    'type': 'rose',
    'color': color,
    'padding': [5, 5, 5, 5],
    'legend': {
      'show': true,
      'position': 'left',
      'lineHeight': 25
    },
    'extra': {
      'rose': {
        'type': 'area',
        'minRadius': 50,
        'activeOpacity': 0.5,
        'activeRadius': 10,
        'offsetAngle': 0,
        'labelWidth': 15,
        'border': false,
        'borderWidth': 2,
        'borderColor': '#FFFFFF'
      }
    }
  },
  'word': {
    'type': 'word',
    'color': color,
    'extra': {
      'word': {
        'type': 'normal',
        'autoColors': false
      }
    }
  },
  'funnel': {
    'type': 'funnel',
    'color': color,
    'padding': [15, 15, 0, 15],
    'extra': {
      'funnel': {
        'activeOpacity': 0.3,
        'activeWidth': 10,
        'border': true,
        'borderWidth': 2,
        'borderColor': '#FFFFFF',
        'fillOpacity': 1,
        'labelAlign': 'right'
      }
    }
  },
  'map': {
    'type': 'map',
    'color': color,
    'padding': [0, 0, 0, 0],
    'dataLabel': true,
    'extra': {
      'map': {
        'border': true,
        'borderWidth': 1,
        'borderColor': '#666666',
        'fillOpacity': 0.6,
        'activeBorderColor': '#F04864',
        'activeFillColor': '#FACC14',
        'activeFillOpacity': 1
      }
    }
  },
  'arcbar': {
    'type': 'arcbar',
    'color': color,
    'title': {
      'name': '百分比',
      'fontSize': 25,
      'color': '#00FF00'
    },
    'subtitle': {
      'name': '默认标题',
      'fontSize': 15,
      'color': '#666666'
    },
    'extra': {
      'arcbar': {
        'type': 'default',
        'width': 12,
        'backgroundColor': '#E9E9E9',
        'startAngle': 0.75,
        'endAngle': 0.25,
        'gap': 2
      }
    }
  },
  'line': {
    'type': 'line',
    'color': color,
    'padding': [15, 10, 0, 15],
    'xAxis': {
      'disableGrid': true
    },
    'yAxis': {
      'gridType': 'dash',
      'dashLength': 2
    },
    'legend': {},
    'extra': {
      'line': {
        'type': 'straight',
        'width': 2,
        'activeType': 'hollow'
      }
    }
  },
  'tline': {
    'type': 'line',
    'color': color,
    'padding': [15, 10, 0, 15],
    'xAxis': {
      'disableGrid': false,
      'boundaryGap': 'justify'
    },
    'yAxis': {
      'gridType': 'dash',
      'dashLength': 2,
      'data': [
        {
          'min': 0,
          'max': 80
        }
      ]
    },
    'legend': {},
    'extra': {
      'line': {
        'type': 'curve',
        'width': 2,
        'activeType': 'hollow'
      }
    }
  },
  'tarea': {
    'type': 'area',
    'color': color,
    'padding': [15, 10, 0, 15],
    'xAxis': {
      'disableGrid': true,
      'boundaryGap': 'justify'
    },
    'yAxis': {
      'gridType': 'dash',
      'dashLength': 2,
      'data': [
        {
          'min': 0,
          'max': 80
        }
      ]
    },
    'legend': {},
    'extra': {
      'area': {
        'type': 'curve',
        'opacity': 0.2,
        'addLine': true,
        'width': 2,
        'gradient': true,
        'activeType': 'hollow'
      }
    }
  },
  'column': {
    'type': 'column',
    'color': color,
    'padding': [15, 15, 0, 5],
    'xAxis': {
      'disableGrid': true
    },
    'yAxis': {
      'data': [{'min': 0}]
    },
    'legend': {},
    'extra': {
      'column': {
        'type': 'group',
        'width': 30,
        'activeBgColor': '#000000',
        'activeBgOpacity': 0.08
      }
    }
  },
  'mount': {
    'type': 'mount',
    'color': color,
    'padding': [15, 15, 0, 5],
    'xAxis': {
      'disableGrid': true
    },
    'yAxis': {
      'data': [{'min': 0}]
    },
    'legend': {},
    'extra': {
      'mount': {
        'type': 'mount',
        'widthRatio': 1.5
      }
    }
  },
  'bar': {
    'type': 'bar',
    'color': color,
    'padding': [15, 30, 0, 5],
    'xAxis': {
      'boundaryGap': 'justify',
      'disableGrid': false,
      'min': 0,
      'axisLine': false
    },
    'yAxis': {},
    'legend': {},
    'extra': {
      'bar': {
        'type': 'group',
        'width': 30,
        'meterBorde': 1,
        'meterFillColor': '#FFFFFF',
        'activeBgColor': '#000000',
        'activeBgOpacity': 0.08
      }
    }
  },
  'area': {
    'type': 'area',
    'color': color,
    'padding': [15, 15, 0, 15],
    'xAxis': {
      'disableGrid': true
    },
    'yAxis': {
      'gridType': 'dash',
      'dashLength': 2
    },
    'legend': {},
    'extra': {
      'area': {
        'type': 'straight',
        'opacity': 0.2,
        'addLine': true,
        'width': 2,
        'gradient': false,
        'activeType': 'hollow'
      }
    }
  },
  'radar': {
    'type': 'radar',
    'color': color,
    'padding': [5, 5, 5, 5],
    'dataLabel': false,
    'legend': {
      'show': true,
      'position': 'right',
      'lineHeight': 25
    },
    'extra': {
      'radar': {
        'gridType': 'radar',
        'gridColor': '#CCCCCC',
        'gridCount': 3,
        'opacity': 0.2,
        'max': 200,
        'labelShow': true
      }
    }
  },
  'gauge': {
    'type': 'gauge',
    'color': color,
    'title': {
      'name': '66Km/H',
      'fontSize': 25,
      'color': '#2fc25b',
      'offsetY': 50
    },
    'subtitle': {
      'name': '实时速度',
      'fontSize': 15,
      'color': '#1890ff',
      'offsetY': -50
    },
    'extra': {
      'gauge': {
        'type': 'default',
        'width': 30,
        'labelColor': '#666666',
        'startAngle': 0.75,
        'endAngle': 0.25,
        'startNumber': 0,
        'endNumber': 100,
        'labelFormat': '',
        'splitLine': {
          'fixRadius': 0,
          'splitNumber': 10,
          'width': 30,
          'color': '#FFFFFF',
          'childNumber': 5,
          'childWidth': 12
        },
        'pointer': {
          'width': 24,
          'color': 'auto'
        }
      }
    }
  },
  'candle': {
    'type': 'candle',
    'color': color,
    'padding': [15, 15, 0, 15],
    'enableScroll': true,
    'enableMarkLine': true,
    'dataLabel': false,
    'xAxis': {
      'labelCount': 4,
      'itemCount': 40,
      'disableGrid': true,
      'gridColor': '#CCCCCC',
      'gridType': 'solid',
      'dashLength': 4,
      'scrollShow': true,
      'scrollAlign': 'left',
      'scrollColor': '#A6A6A6',
      'scrollBackgroundColor': '#EFEBEF'
    },
    'yAxis': {},
    'legend': {},
    'extra': {
      'candle': {
        'color': {
          'upLine': '#f04864',
          'upFill': '#f04864',
          'downLine': '#2fc25b',
          'downFill': '#2fc25b'
        },
        'average': {
          'show': true,
          'name': ['MA5', 'MA10', 'MA30'],
          'day': [5, 10, 20],
          'color': ['#1890ff', '#2fc25b', '#facc14']
        }
      },
      'markLine': {
        'type': 'dash',
        'dashLength': 5,
        'data': [
          {
            'value': 2150,
            'lineColor': '#f04864',
            'showLabel': true
          },
          {
            'value': 2350,
            'lineColor': '#f04864',
            'showLabel': true
          }
        ]
      }
    }
  },
  'mix': {
    'type': 'mix',
    'color': color,
    'padding': [15, 15, 0, 15],
    'xAxis': {
      'disableGrid': true
    },
    'yAxis': {
      'disabled': false,
      'disableGrid': false,
      'splitNumber': 5,
      'gridType': 'dash',
      'dashLength': 4,
      'gridColor': '#CCCCCC',
      'padding': 10,
      'showTitle': true,
      'data': []
    },
    'legend': {},
    'extra': {
      'mix': {
        'column': {
          'width': 20
        }
      }
    }
  },
  'scatter': {
    'type': 'scatter',
    'color': color,
    'padding': [15, 15, 0, 15],
    'dataLabel': false,
    'xAxis': {
      'disableGrid': false,
      'gridType': 'dash',
      'splitNumber': 5,
      'boundaryGap': 'justify',
      'min': 0
    },
    'yAxis': {
      'disableGrid': false,
      'gridType': 'dash'
    },
    'legend': {},
    'extra': {
      'scatter': {}
    }
  },
  'bubble': {
    'type': 'bubble',
    'color': color,
    'padding': [15, 15, 0, 15],
    'xAxis': {
      'disableGrid': false,
      'gridType': 'dash',
      'splitNumber': 5,
      'boundaryGap': 'justify',
      'min': 0,
      'max': 250
    },
    'yAxis': {
      'disableGrid': false,
      'gridType': 'dash',
      'data': [{
        'min': 0,
        'max': 150
      }]
    },
    'legend': {},
    'extra': {
      'bubble': {
        'border': 2,
        'opacity': 0.5
      }
    }
  }
}

export default cfu
